package Repositorio;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import Dados.Pessoa;
import Dados.Usuario;

public class RepositorioUsuario {
	private Statement stmt;
	private String sqlStatement;
	public RepositorioUsuario() {
		stmt = Conexao.getInstance().stmt;
	}
	public void cadastrarUsuario(Usuario user) throws SQLException {
		RepositorioPessoa repPessoa = new RepositorioPessoa();
		if(!repPessoa.verificarPessoa(user.getCpf())) {
			Pessoa p = new Pessoa(user.getCpf(), user.getNome(), user.getDataNascimento(), user.getEndereco(), user.getTelefone());
			repPessoa.cadastrarPessoa(p);
		}
		sqlStatement = "INSERT INTO Usuario VALUES('"+user.getCpf()+"','"+user.getLogin()+"','"+user.getSenha()+"')";
		stmt.executeUpdate(sqlStatement);
	}
	public void editarUsuario(Usuario user) throws SQLException {
		RepositorioPessoa repPessoa = new RepositorioPessoa();
		Pessoa pessoa = new Pessoa(user.getCpf(), user.getNome(), user.getDataNascimento(), user.getEndereco(), user.getTelefone());
		repPessoa.editarPessoa(pessoa);
		sqlStatement = "UPDATE Usuario SET Login='"+user.getLogin()+"', Senha='"+user.getSenha()+"' WHERE cpf='"+user.getCpf()+"'";
		stmt.executeUpdate(sqlStatement);
	}
	public void removerUsuario(String cpf) throws SQLException {
		RepositorioMedico repMedico = new RepositorioMedico();
		RepositorioAdministrador repAdministrador = new RepositorioAdministrador();
		RepositorioSecretaria repSecretaria = new RepositorioSecretaria();
		if(!repMedico.verificarMedico(cpf) && !repAdministrador.verificarAdministrador(cpf) && !repSecretaria.verificarSecretaria(cpf)) {
			sqlStatement = "DELETE FROM Usuario WHERE cpf ='"+cpf+"'";
			stmt.executeUpdate(sqlStatement);
			RepositorioPessoa repPessoa = new RepositorioPessoa();
			repPessoa.removerPessoa(cpf);
		}
	}
	public Usuario consultarUsuario(String cpf) throws SQLException {
		sqlStatement = "SELECT Login, Senha FROM Usuario WHERE cpf='"+cpf+"'";
		ResultSet rs = stmt.executeQuery(sqlStatement);
		rs.next();
		String login = rs.getString("Login");
		String senha = rs.getString("Senha");
		RepositorioPessoa repPessoa = new RepositorioPessoa();
		Usuario user = new Usuario(repPessoa.consultarPessoa(cpf), login, senha);
		return user;
	}
	public String consultarCpfUsuario(String usuario) throws SQLException {
		sqlStatement = "SELECT CPF FROM Usuario WHERE Login='"+usuario+"'";
		ResultSet rs = stmt.executeQuery(sqlStatement);
		rs.next();
		String cpf = rs.getString("CPF");
		return cpf;
	}
	public boolean verificarUsuario(String cpf) throws SQLException {
		boolean ret;
		sqlStatement = "SELECT * FROM Usuario WHERE cpf='"+cpf+"'";
		ResultSet rs = stmt.executeQuery(sqlStatement);
		if(rs.next()) {
			ret = true;
		} else {
			ret = false;
		}
		return ret;
	}
	public boolean verificarUsuarioSenha(String usuario, String senha) throws SQLException {
		boolean ret;
		sqlStatement = "SELECT * FROM Usuario WHERE Login='"+usuario+"' AND Senha='"+senha+"'";
		ResultSet rs = stmt.executeQuery(sqlStatement);
		if(rs.next()) {
			ret = true;
		} else {
			ret = false;
		}
		return ret;
	}
};
